/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package expertos;


import DTOs.DTOMaterial;
import DTOs.DTOPedidos;
import entidadesNegocio.Pedido;

import excepciones.ExpertoPedidoException;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import persistencia.Fachada;

/**
 *
 * @author eduardo
 */
public class ExpertoPedidos extends Experto{

    public List<Pedido> buscarPedidos(DTOPedidos dtoBusqueda) throws ExpertoPedidoException {
        List<Pedido> pedidosEncontrados = null;
        if (dtoBusqueda == null) {
            pedidosEncontrados = Fachada.getInstancia().buscar(Pedido.class, null);
        } else {
            Criteria criterio = Fachada.getInstancia().crearCriterio(Pedido.class);
            if (dtoBusqueda.getNropedido().length() > 0) {
                criterio.add(Restrictions.like("nropedido", "%"+dtoBusqueda.getNropedido()+"%"));
            }
            if (dtoBusqueda.getFechaPedidoDesde().length() > 0){
                if (dtoBusqueda.getFechaPedidoHasta().length() > 0){
                    criterio.add(Restrictions.between(null, "%" + dtoBusqueda.getFechaPedidoDesde() + "%", "%" + dtoBusqueda.getFechaPedidoHasta() + "%"));
                }
                
            }
            criterio.addOrder(Order.asc("nropedido"));
            pedidosEncontrados = Fachada.getInstancia().buscar(Pedido.class, criterio);
        }

        if (pedidosEncontrados.isEmpty()) {
            throw new ExpertoPedidoException("No se han encontrado Pedidos para los datos ingresados");
        }

        return pedidosEncontrados;
    }

  /*  public void eliminarPedido(Pedido pedido) throws ExpertoPedidoException{
        pedido.setEliminado(Boolean.TRUE);
        try {
            Fachada.getInstancia().guardar(pedido);
        } catch (Exception ex) {
            throw new ExpertoPedidoException("Error al eliminar el Pedido");
        }
    }

   
    public void guardarPedido(Pedido pedido) throws ExpertoPedidoException {
        if (pedidoInvalido(pedido)) {
            throw new ExpertoPedidoException("Faltan completar Campos");
        }
        try {
            Fachada.getInstancia().guardar(pedido);
        } catch (Exception ex) {
            throw new ExpertoPedidoException("Error al guardar el Pedido");
        }
    }

    private boolean pedidoInvalido(Pedido pedido) {

        if (pedido.getNroPedido().length() == 0) {
            return true;
        } else if (pedido.getFechaPedido().length() == 0) {
            return true;
        } else if (pedido.getTamanioUnidadMaterial() == 0) {
            return true;
        } else if (material.getUnidadmedidamaterial().length() == 0) {
            return true;
        } else if (material.getTipomaterial() == null) {
            return true;
        } else {
            return false;
        }
        return false;
    }

    */
}
